home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 3 / Amiga Tools 3.iso / rexx / reply.avm < prev    next >
Text File  |  1994-06-24  |  7KB  |  254 lines

  1. /* TITLE: avm:rexx/reply.avm */
  2. parse arg mailbox logs
  3. call addlib("rexxsupport.library", 0, -30, 0)
  4.  
  5. numlogs = words(logs)
  6. do i = 1 to numlogs
  7.   call loadLogEntry(mailbox, word(logs, i))
  8.   handle = makeUniqueFile()
  9.   if log.returnNumber = '' then log.returnNumber = log.cidNumber
  10.   log.fileName = handle; log.returnRetry = 0; log.returnInterval = 5
  11.   log.altFileName = voiceFile(mailbox, 'Introduction'); log.returnSendFunc = 'DefaultSender'
  12.   log.time = cTime(); log.origMailbox = mailbox; call saveLogEntry('Outgoing', handle)
  13.   address command 'run <nil: >nil: avm:schedulerview' 'outgoing' handle
  14. end
  15.  
  16. error:
  17. exit
  18.  
  19. exit
  20.  
  21. mailboxDir: procedure
  22.     parse arg mailbox
  23.  
  24.     return 'avm:' || mailbox || '/'
  25.  
  26. logFile: procedure
  27.     parse arg mailbox, magiccookie
  28.  
  29.     return 'avm:' || mailbox || '/logs/' || magiccookie
  30.  
  31. voiceFile: procedure
  32.     parse arg mailbox, magiccookie
  33.  
  34.         if (verify(magiccookie, '/:', 'M') = 0) then
  35.           return 'avm:' || mailbox || '/voices/' || magiccookie
  36.         else
  37.           return magiccookie
  38.  
  39. makeUniqueFile: procedure
  40.     if arg() ~= 0 then do
  41.         rc = "makeUniqueFile: bad args"
  42.         signal error
  43.     end
  44.     return address() || '.' || date('i') || '.' || time('s') || '.' || random(1, 999, time('s'))
  45.  
  46. convertToDate: procedure
  47.     if arg() ~= 1 then do
  48.         rc = "convertToDate: bad args"
  49.         signal error
  50.     end
  51.     parse arg timeInC
  52.  
  53.     actualTime = (timeInC - (2922)*86400) // (86400)
  54.     actualDate = (timeInC - actualTime - 2922*86400) % 86400
  55.  
  56.     return actualDate /* returning it in 'internal' format */
  57.  
  58. convertToTime: procedure
  59.     if arg() ~= 1 then do
  60.         rc = "convertToTime: bad args"
  61.         signal error
  62.     end
  63.     parse arg timeInC
  64.     
  65.     actualTime = (timeInC - (2922)*86400) // (86400)
  66.  
  67.     return actualTime
  68.  
  69. cTime: procedure
  70.     /* 2922 = 8*365 + 2 */
  71.     /* 86400 = 24*60*60 */
  72.     return (date('i')+2922)*86400 + time('s')
  73.  
  74. /* this returns a handle that you must use after initializing log. */
  75. initLogEntry: procedure expose log.
  76.     if arg() ~= 0 then do
  77.         rc = "initLogEntry: bad args"
  78.         signal error
  79.     end
  80.     
  81.     drop log.
  82.         log. = ''
  83.  
  84.         acidname = getclip(address() || 'CIDNAME')
  85.         acidnumber = getclip(address() || 'CIDNUMBER')
  86.  
  87.     /* 2922 = 8*365 + 2 */
  88.     /* 86400 = 24*60*60 */
  89.     log.time = (date('i')+2922)*86400 + time('s')
  90.     log.cidname = acidname
  91.     log.cidnumber = acidnumber
  92.  
  93.     return
  94.  
  95. loadLogEntry: procedure expose log.
  96.     if arg() ~= 2 then do
  97.         rc = "loadLogEntry: bad args"
  98.         signal error
  99.     end
  100.     parse arg mailbox, handle
  101.  
  102.         drop log.
  103.         log. = ''
  104.  
  105.     if ~exists(mailboxDir(mailbox)) then do
  106.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  107.         return
  108.     end
  109.  
  110.     opened = open(handle, logFile(mailbox, handle), 'r')
  111.         if opened then do
  112.         call showDebugger('Loading entry' logFile(mailbox, handle))
  113.         do while ~eof(handle)
  114.             line = readln(handle)
  115.             parse upper var line variable '=' value
  116.             log.variable = value
  117.         end
  118.         call close(handle)
  119.     end; else call showDebugger('Could not load' logFile(mailbox, handle))
  120.     return
  121.  
  122. /* pass a handle here */
  123. saveLogEntry: procedure expose log.
  124.     if arg() ~= 2 then do
  125.         rc = "saveLogEntry: bad args"
  126.         signal error
  127.     end
  128.     parse arg mailbox, handle
  129.  
  130.     if ~exists(mailboxDir(mailbox)) then do
  131.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  132.         return
  133.     end
  134.  
  135.     opened = open(handle, logFile(mailbox, handle), 'w')
  136.  
  137.     if opened then do
  138.         call showDebugger('Saving entry' logFile(mailbox, handle))
  139.         call writeln(handle, 'TYPE=' || log.type)
  140.         call writeln(handle, 'TIME=' || log.time)
  141.         call writeln(handle, 'LENGTH=' || log.length)
  142.  
  143.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  144.  
  145.         call writeln(handle, 'CIDNAME=' || log.cidname)
  146.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  147.  
  148.         call writeln(handle, 'COMMENT=' || log.comment)
  149.  
  150.         call writeln(handle, 'FILENAME=' || log.filename)
  151.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  152.  
  153.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  154.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  155.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  156.  
  157.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  158.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  159.  
  160.         call close(handle)
  161.         address rexx 'broadcast' 'addtomailbox' mailbox handle
  162.     end; else call showDebugger('Could not save' logFile(mailbox, handle))
  163.  
  164.     return
  165.  
  166. /* pass a handle here */
  167. updateLogEntry: procedure expose log.
  168.     if arg() ~= 2 then do
  169.         rc = "updateLogEntry: bad args"
  170.         signal error
  171.     end
  172.     parse arg mailbox, handle
  173.  
  174.     if ~exists(mailboxDir(mailbox)) then do
  175.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  176.         return
  177.     end
  178.  
  179.     if ~exists(logFile(mailbox, handle)) then do
  180.         call showDebugger('Unable to update non-existent' logFile(mailbox, handle))
  181.         return
  182.     end
  183.     opened = open(handle, logFile(mailbox, handle), 'w')
  184.  
  185.     if opened then do
  186.         call showDebugger('Updating entry' logFile(mailbox, handle))
  187.         call writeln(handle, 'TYPE=' || log.type)
  188.         call writeln(handle, 'TIME=' || log.time)
  189.         call writeln(handle, 'LENGTH=' || log.length)
  190.  
  191.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  192.  
  193.         call writeln(handle, 'CIDNAME=' || log.cidname)
  194.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  195.  
  196.         call writeln(handle, 'COMMENT=' || log.comment)
  197.  
  198.         call writeln(handle, 'FILENAME=' || log.filename)
  199.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  200.  
  201.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  202.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  203.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  204.  
  205.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  206.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  207.  
  208.         call close(handle)
  209.         address rexx 'broadcast' 'refreshmailboxentry' mailbox handle
  210.     end; else call showDebugger('Could not update' logFile(mailbox, handle))
  211.  
  212.     return
  213.  
  214.  
  215.  
  216. showDebugger: procedure
  217.     if arg() ~= 1 then do
  218.         say "showDebugger: ERROR"
  219.         exit 20
  220.     end
  221.  
  222.     parse arg debuggerInfo
  223.     
  224.     firstLine = sourceline(1)
  225.     parse var firstLine '/*' 'TITLE:' title '*/'
  226.     if showlist('p', 'AVMLOGGER') then
  227.         address 'AVMLOGGER' 'add' title ':' debuggerInfo
  228.     else
  229.         say title ':' debuggerInfo
  230.  
  231.     return 
  232.  
  233. /*-----------------------------------------------------------------------*/
  234. /*                         signal processing                             */
  235.  
  236. arexxerror:
  237. error:
  238.     call showDebugger("Error" rc "at line" sigl)
  239.     exit 20
  240.  
  241. break_c:
  242. halt:
  243.     call showDebugger("Halt/Break_C at line" sigl)
  244.     exit 20
  245.  
  246. novalue:
  247.     call showDebugger("No value at line" sigl)
  248.     exit 20
  249.  
  250. syntax:
  251.     call showDebugger("Syntax error" rc "at line" sigl)
  252.     exit 20
  253.  
  254.